// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef NET_CERT_CT_POLICY_STATUS_H
#define NET_CERT_CT_POLICY_STATUS_H

namespace net {

namespace ct {

    // Information about the connection's compliance with the CT
    // certificate policy.
    enum class CertPolicyCompliance {
        // The connection complied with the certificate policy by
        // including SCTs that satisfy the policy.
        CERT_POLICY_COMPLIES_VIA_SCTS = 0,
        // The connection did not have enough SCTs to comply.
        CERT_POLICY_NOT_ENOUGH_SCTS,
        // The connection did not have diverse enough SCTs to comply.
        CERT_POLICY_NOT_DIVERSE_SCTS,
        // The connection cannot be considered compliant because the build
        // isn't timely and therefore log information might be out of date
        // (for example a log might no longer be considered trustworthy).
        CERT_POLICY_BUILD_NOT_TIMELY,
    };

    // Information about a connection's compliance with the CT EV
    // certificate policy.
    // This enum is histogrammed, so do not remove or reorder values.
    enum class EVPolicyCompliance {
        // The certificate was not EV, so the EV policy doesn't apply.
        EV_POLICY_DOES_NOT_APPLY = 0,
        // The connection complied with the EV certificate policy by being
        // included on the EV whitelist.
        EV_POLICY_COMPLIES_VIA_WHITELIST,
        // The connection complied with the EV certificate policy by
        // including SCTs that satisfy the policy.
        EV_POLICY_COMPLIES_VIA_SCTS,
        // The connection did not have enough SCTs to retain its EV
        // status.
        EV_POLICY_NOT_ENOUGH_SCTS,
        // The connection did not have diverse enough SCTs to retain its
        // EV status.
        EV_POLICY_NOT_DIVERSE_SCTS,
        // The connection cannot be considered compliant because the build
        // isn't timely and therefore log information might be out of date
        // (for example a log might no longer be considered trustworthy).
        EV_POLICY_BUILD_NOT_TIMELY,
        EV_POLICY_MAX,
    };

} // namespace ct

} // namespace net

#endif // NET_CERT_CT_POLICY_STATUS_H
